/* 
 * Programme simulant la gestion d'une imprimante
 */

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

void impression(char *nomFic){

  printf("Debut d'impression de \"%s\"...\n", nomFic);
  sleep(5); /* Simule la lenteur de l'impression */
  printf("...Fin d'impression de \"%s\"...\n", nomFic);

}

void attenteImpression(){
  char nomFic[80];
  pid_t pid;

  do {
    printf("Nom du fichier a imprimer (taper '0' pour terminer) ?\n");
    scanf("%s", nomFic);
    if (strcmp(nomFic,"0") == 0){
      break;
    }
    // Fork
    pid = fork();
    switch(pid) {
      case -1:
        fprintf(stderr,"echec fork\n");
        break;
      case 0:
        /* Enfant */
        impression(nomFic);
        break;
      default:
        
        break;
    }
  }while (1);
  printf("Au revoir\n");

}

int main(){

  attenteImpression();
  return EXIT_SUCCESS;

}
